草庐IT

c++ getline和stringstream

全部标签

c++ - 简单但频繁使用 std::stringstream 是否过早悲观?

我有一个简单的场景。我需要将两个C字符串连接成一个std::string。我决定采用以下两种方式之一:方案一voidProcessEvent(charconst*pName){std::stringfullName;fullName.reserve(50);//Ensureminimalreallocationsforsmalleventnames(50isanarbitrarylimit).fullName+="com.domain.events.";fullName+=pName;//UsefullNameasneeded}解决方案2voidProcessEvent(charcon

c++ - stringstream 未在此范围内声明

我在使用stringstream时遇到问题。我的visualstudio和linuxg++都无法理解stingstream。我已经添加了sstream但它没有解决任何问题。我以前用过它,但真的不知道它现在怎么样了?#include#include#include"SymbolTable.cpp"#include"setjmp.h"usingnamespacestd;jmp_buf*bfj;intTOP,SP=3;structtypes{intint_val;floatfloat_val;charchar_val;boolbool_val;};typesDS[6400];intmain(

c++ - std::stringstream 如何处理 operator<< 中的 wchar_t*?

鉴于以下代码段无法编译:std::stringstreamss;ss我也不认为这个会:std::stringstreamss;ss但确实如此(至少在VC++上)。我猜这是由于以下ostream::operator过载:ostream&operator如果我不小心混合了字符类型,这是否有可能悄悄地破坏我的代码? 最佳答案 是的-您需要wstringstream用于wchar_t输出。您可以通过不使用字符串文字来缓解这种情况。如您所述,如果您尝试将constwstring&传递给stringstream,它将无法编译。

c++ - 用 '0' c++ 填充 stringstream 变量的右侧

我有下一个代码:ofstreamdataIndex;dataIndex.open("file");index="2222";std::stringstreamsstr1;sstr1我希望结果:2222100000但只有我明白22221没有零?发生了什么事? 最佳答案 使用std::left左对齐输出#include#include#includeintmain(){std::strings("2222");std::cout输出:222200000 关于c++-用'0'c++填充stri

c++ - std::getline 在 for 循环中不起作用

我正在尝试将用户的输入收集到一个字符串变量中,该变量在指定的时间内接受空格。因为通常的cin>>str不接受空格,所以我会使用中的std::getline这是我的代码:#include#include#include#includeusingnamespacestd;intmain(){intn;cin>>n;for(inti=0;i有什么想法吗? 最佳答案 如果输出存储在local中的内容(顺便说一下,这是一个糟糕的变量名:P),你就会明白为什么会失败:#include#include#include#includeusingna

c++ - getline 不要求输入?

这个问题在这里已经有了答案:Needhelpwithgetline()[duplicate](7个答案)关闭7年前。这可能是一个非常简单的问题,但请原谅我,因为我是新手。这是我的代码:#include#include#includeusingnamespacestd;intmain(){stringname;inti;stringmystr;floatprice=0;cout>name;cout>i;cout>price;cout问题是当询问那件夹克多少钱?时,getline并不要求用户输入,只是输入初始值“0”。这是为什么?

c++ - mmap 比 getline 慢?

我面临着逐行读取/写入文件(以Gig为单位)的挑战。阅读许多论坛条目和站点(包括一堆SO)后,mmap被建议为读取/写入文件的最快选项。但是,当我使用readline和mmap技术实现我的代码时,mmap是两者中较慢的。阅读和写作都是如此。我一直在测试大约600MB的文件。我的实现逐行解析,然后标记该行。我将仅提供文件输入。这是getline的实现:voidtwo(char*path){std::ios::sync_with_stdio(false);ifstreampFile(path);stringmystring;if(pFile.is_open()){while(getline

c++ - 使用匿名 Stringstream 构造字符串

我想用这样的代码直接读入一个字符串:std::stringmyString((std::ostringstream()但是VS2012向我投诉basic_ostream没有str()方法。有没有办法用匿名字符串流做到这一点? 最佳答案 operator对于流返回std::ostream&没有str()成员函数。你需要使用cast。static_cast(std::ostringstream()C++03和C++11使用临时流的区别!C++03但请注意(在C++03中)std::ostringstream()创建一个临时对象,这意味着

c++ - getline 和 std::istream::operator>>() 有什么区别?

#include#includeusingnamespacestd;intmain(){stringusername;cout>username;}所以我很好奇这两个代码之间有什么区别,我听说这是同一件事,但如果是,那为什么要用两种方法呢?#include#includeusingnamespacestd;intmain(){stringusername;cout 最佳答案 区别在于std::getline—顾名思义—从给定的输入流(可能是std::cin)和operator>>中读取行读一个单词1。即std::getline读取直

c++ - 使用 getline 跳过空格

我正在制作一个制作问题表格的程序。问题被保存到一个文件中,我想读取它们并将它们存储在内存中(我为此使用了一个vector)。我的问题有以下形式:1TEXTWhatisyourname?2CHOICEAreyoureadyforthesequestions?YesNo我的问题是,当我从文件中读取这些问题时,我使用getline读取一行,然后将其转换为字符串流,读取问题的编号和类型,然后再次使用getline,在这次是stringstream,阅读问题的其余部分。但它的作用是,它还会读取问题前面的空格,当我再次将问题保存到文件并再次运行程序时,问题前面有2个空格,之后有3个空格,等等……这